package jm.nj.day01mian.demo04;

/*
 * java.lang.String类:String类是引用数据类型
 *
 * String类代表字符串.java中所有字符串面值("abc")都作为此类实例实现对象
 *
 * String s = "abc";   隐含一个创建对象的过程
 *
 * String是一个常量值不能改变,底层是一个字符串数组,由多个数组组成
 * private final char value[] = new char[0];
 * 数组被final修饰后,数组地址不能改变,所有就是一个常量
 * 只要是常量就存在方法区的常量区中
 * */
public class DemoString {
    public static void main(String[] args) {
       //method05();
       method04();
       //method03();
       //method02();
       // method01();

    }


    /*
     * String trim();去除字符串两端空格
     * String[] split(String str)按照指定符号切割字符串
     * */

    private static void Method_05() {
        System.out.println("  fas  fa  ".trim());
        String s = "fhaskfhdjshsdfksfhjks";
        String[] arr = s.split("f");
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }



    /*
     * String类的构造方法
     * publi String(String original) 把字符串数据封装成字符串对象
     * publi String(char[] value) 把字符串数组封装成字符串对象
     * publi String(char[] value,int offset,int count) 把字符串数组一部分封装成字符串对象
     *直接赋值也可以是一个对象(定义一个字符串对象)
     * 注意:字符串是一种比较特殊的引用类型,直接输出字符串对象输出的是该对象的数据.
     * 原因:因为直接打印对象的名字就是调用对象的toString方法,Sting类重写了这个方法,打印的是字符串中的内容
     *
     *
     * */
    private static void method01(){
        String s1 = "dad";
        System.out.println(s1);

        String s2 = new String("dad");
        System.out.println(s2);

        char[] arr = {'a','b','c'};
        String s3 = new String(arr);
        System.out.println(s3);

        String s4 = new String(arr,0,2);

    }

    /*
    * 判断功能方法
    *           boolean equals(_String s)比较字符串
    *           boolean equalsIgnoreCase(String str)比较字符串不区分大小写
    *           boolean stratsWith(String str) 判断是否使用str开头
    *           boolean endsWith(String str)判断是否使用str结尾
    *
    * */
    private static void method02(){
        System.out.println("abc".equals("abc"));
        System.out.println("abc".equalsIgnoreCase("ABC"));
        System.out.println("fhskljj".startsWith("fh"));
        System.out.println("fdsfa".endsWith("fa"));
    }

    /*
    *获取功能方法
    *       int length() 获取字符串长度
    *       char charAt(int index)  获取指定索引处字符串
    *       int indexOf(String str)  获取str在字符串第一次出现的索引
    *       String substring(int beginIndex)  从beginIndex开始截取到末尾
    *       String substring(int beginIndex, int endIndex)  从beginIndex到endIndex结束
    * */
    private static void method03(){
        System.out.println("fjaskhj".length());


        System.out.println("fsdajkfhk".charAt(3));

        System.out.println("fsaf".indexOf("sa"));

        System.out.println("dsafhaskhf".substring(5));
        System.out.println("dsafhaskhf".substring(5,8));
    }

    /*
    * 转换功能方法
    * char[] toCharArray(); 把字符串转换为字符串数组
    * String toLowerCase() 把字符串转换为小写字符串
    * String toUpperCase() 把字符串转为大写字符串
    *
    * */
private static void method04(){
    char[] arr = "adfa".toCharArray();
    for (int i = 0; i < arr.length; i++) {
        System.out.println(arr[i]);
    }
    System.out.println("husdakfhsaGJKG".toLowerCase());
    System.out.println("ajhfsajdhgf".toUpperCase());
}


}

